package cn.zqy.demo2.day08.Recursion;

import java.io.File;
import java.io.IOException;

public class Demo04DirectoryRecursion {
    public static void main(String[] args) throws IOException {
        newFile();
        newDirectory();
        File fs = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc");
        getAllFile(fs);
    }

    // 新建文件
    private static void newFile(){
        File f1 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\a");
        File f2 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\b");
        f1.mkdirs();
        f2.mkdirs();
    }

    // 新建文件夹
    private static void newDirectory() throws IOException {
        File f1 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\a\\a.css");
        File f2 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\a\\a.txt");
        File f3 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\abc.html");
        File f4 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\abc.txt");
        File f5 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\b\\b.java");
        File f6 = new File("src\\cn\\zqy\\demo2\\day08\\recursion\\abc\\b\\b.txt");
        f1.createNewFile();
        f2.createNewFile();
        f3.createNewFile();
        f4.createNewFile();
        f5.createNewFile();
        f6.createNewFile();
    }

    // 递归遍历文件夹及其文件
     /*
        定义一个方法,参数传递File类型的目录
        方法中对目录进行遍历
     */
    private static void getAllFile(File name) {
        System.out.println("目录为：" + name);
        File[] ff = name.listFiles();
        for (File f: ff) {
            //对遍历得到的File对象f进行判断,判断是否是文件夹
            if (f.isDirectory()) {
                //f是一个文件夹,则继续遍历这个文件夹
                //我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
                //所以直接调用getAllFile方法即可:递归(自己调用自己)
                getAllFile(f);
            } else {
                //f是一个文件,直接打印即可
                System.out.println("文件为" + f);
            }
        }
    }
}
